Known voice processing systems includes basic time-division multiplex (TDM) connection management, to enable the coordination of connections between resources such as channels on line cards (SPacks or VPacks), and channels on digital signal processor (DSPs) cards that provide, amongst other things voice recognition, text-to-speech, fax capabilities and so on. Connections are made via a TDM bus, for example Dialogic's SCbus.
Problems are encountered when a telephone call with a voice processing platform ends suddenly because the caller hangs up. If the telephony channel has connections with other channels or resources via a TDM bus, callers may hear spurious data. When a caller hangs up, and the channel into which they were connected is involved in TDM connections, TDM connections should be cleared up by the custom servers which set them up, but this may not happen immediately due to unpredictable scheduling delays of user space processes. Two undesirable situations may arise. Firstly, if the channel was transmitting onto the TDM bus, e.g. the caller was tromboned to another caller, spurious voice data may be sent to the bridged caller. Initially this could be noise/idle pattern, but if the channel was quickly re-us before the application have acted on the hangup condition and eliminated the bridge, then the remaining bridged caller could hear someone else's voice. Secondly, if the channel was listening to the TDM bus, e.g. the caller was tromboned to another caller, or was connected to a text-to-speech device, voice data from the TDM bus may continue to be transmitted to the line, even though the call is no longer in progress.
These problems result in impaired usability by callers into the system, and also possible homologation problems which may prevent the attachment of the voice processing equipment to telephone networks in certain countries.
Further problems are encountered in setting up a new telephone connection. A common use of a TDM bus is to make connections between a caller who has called in to a voice processing system, and a called party, to whom a call has been placed by an application running on that voice processing system. Examples of such an application include a chargecard calling service, or transfer of a call from an IVR application to a call centre agent for human intervention.
In the example of the chargecard calling service; after entering the desired number, the calling party expects to hear ringing from the called party's telephone, or in case the call fails, an indicative tone (busy, invalid number, etc). However due to a limitation in current voice processing systems, it may be impossible to know which telephony channel will be used to make the outbound call, until the call has completed. This may be because the high-level voice application development environment provides an automatic MakeCall action, which only returns channel number to the caller after it has detected that the call has been answered, or has failed. Alternatively it could be due to a telephony signalling protocol which implements "channel negotiation" i.e., is able independently to select a different channel from that initially chosen, due to a clash between incoming and outgoing calls on the initially selected channel.
If the outgoing channel is not known until the call completes, the application designer has no option but to wait for call completion before requesting the TDM connection between the callers. Therefore the application does not meet the callers expectations as they will not be able to hear ringing from the called party's phone. Instead the application designer will probably need to play an announcement such "please wait while your call is connected", after which the next thing the caller will hear is the called party's voice saying "hello?". Even worse, if there are inherent delays in establishing the TDM connection, part of the called party's greeting may be lost, causing confusion between the callers.
The key idea of this invention is to allow TDM connections to be requested `before` a MakeCall action, even though the channel number for the outgoing call has not yet been chosen. The voice processing system will defer requests for unknown channels, but will automatically complete them as soon as the calling channel is known, without intervention from the application.
The proposed solution is for the line adapter driver to provide a notification to the system timeslot manager. Each time a far-end (i.e. caller) hangup is detected, and each time a new outbound call is placed. Each notification contains the call reference for the affected call, and in the case of a new call notification, identification of the channel on which the call has been placed.
System timeslot manager uses the information in these notifications to identify TDM connections which should be made or broken.